package br.edu.ufcg.compiladores.brasigol.lexico;

import br.edu.ufcg.compiladores.brasigol.sintatico.TipoToken;

public class Token {
	private TipoToken id;
	private String lexeme;
	private int position;
	private int linha;

	public Token(int id, String lexeme, int linha, int position) {
		this.id = TipoToken.values()[id];
		this.lexeme = lexeme;
		this.position = position;
		this.linha = linha;
	}
	public Token(TipoToken id, String lexeme, int linha, int position) {
		this.id = id;
		this.lexeme = lexeme;
		this.position = position;
		this.linha = linha;
	}

	public TipoToken getId() {
		return id;
	}

	public final String getLexeme() {
		return lexeme;
	}

	public final int getPosition() {
		return position;
	}

	public String toString() {
		return "codigo: "+ id + " token: \"" + lexeme + "\" linha: "+ linha +", posicao: "+ position;
	}

	public String getPosicao() {
		return "linha: "+linha + ", posicao: "+position;
	}

	/**
	 * @return the linha
	 */
	public int getLinha() {
		return linha;
	}

	/**
	 * @param linha the linha to set
	 */
	public void setLinha(int linha) {
		this.linha = linha;
	};
}
